package ar.uba.fi.algo3.algoflight.view;

import java.io.IOException;

import ar.uba.fi.algo3.algoflight.model.aviones.Avion;
import ar.uba.fi.algo3.algoflight.model.juego.Escenario;
import ar.uba.fi.algo3.algoflight.model.pistas.Pista;
import ar.uba.fi.algo3.algoflight.view.aviones.FactoryVistaAvion;
import ar.uba.fi.algo3.algoflight.view.aviones.VistaAvion;
import ar.uba.fi.algo3.algoflight.view.pistas.FactoryVistaPista;
import ar.uba.fi.algo3.algoflight.view.pistas.VistaPista;
import fiuba.algo3.titiritero.dibujables.Imagen;
import fiuba.algo3.titiritero.modelo.SuperficieDeDibujo;

public class VistaEscenario extends Imagen {

	private Escenario escenario;
	private FactoryVistaAvion factoryVistaAvion;
	private FactoryVistaPista factoryVistaPista;

	public VistaEscenario(Escenario escenario, String rutaImagen)
			throws IOException {
		super(VistaEscenario.class.getResource(rutaImagen), escenario);
		this.escenario = escenario;
		this.factoryVistaAvion = new FactoryVistaAvion();
		this.factoryVistaPista = new FactoryVistaPista();
	}

	@Override
	public void dibujar(SuperficieDeDibujo superficieDeDibujo) {

		super.dibujar(superficieDeDibujo);
		for (Pista pista : escenario.getListaPistas()) {
			try {
				VistaPista vistaPista = factoryVistaPista
						.crearVistaPista(pista);
				vistaPista.dibujar(superficieDeDibujo);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

		for (Avion avion : escenario.getListaAviones()) {
			try {
				VistaAvion vistaAvion = factoryVistaAvion
						.crearVistaAvion(avion);
				vistaAvion.dibujar(superficieDeDibujo);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}
